package org.batatasframework.bytecode.spi;

import org.batatasframework.bytecode.ClassAsminfo;
import org.springframework.asm.MethodVisitor;

/**
 * 把值加载进来处理；可能从变量、或是调用某个方法的返回值、或创建一个新的对象等...
 * @author jackson
 *
 */
public interface AsmLoadable {
	
	/** 加载一个变量 */
	void load(MethodVisitor visitor);
	
	/**
	 * <pre>
	 * 加载一个变量，并且需要判断变量的类型与目标类型是否一致；
	 * 如果不一致，则需要进行强制转换
	 * </pre>
	 */
	void load(MethodVisitor visitor, ClassAsminfo targetType);
	
}
